package com.prs.crm.service;

import java.util.Collection;

import org.hibernate.criterion.DetachedCriteria;

import com.prs.crm.report.ExportConfig;
import com.prs.crm.report.ReportTable;

/**
 * 报表导出服务
 * @author prs.chenzhi
 *
 */
public interface ReportService {
	

	/**
	 * 导出报表 
	 * @param table 已经包含数据源
	 * @param config
	 * @param type 导出的报表类型
	 * @return 导出的报表文件路径
	 */
	String report(ReportTable table,ExportConfig config,int type);
	
	
		
	
	
	/**
	 * 导出EXCEL报表
	 * @param table
	 * @param config
	 * @return 导出的报表文件路径
	 */
	String reportExcel(ReportTable table,ExportConfig config);
	
	/**
	 * 导出PDF报表
	 * @param table
	 * 
	 * 
	 * 
	 * 
	 * 
	 * @param config
	 * @return 导出的报表文件路径
	 */
	String reportPDF(ReportTable table,ExportConfig config);
	
	
	/**
	 * 根据指定的类型导出报表
	 * @param criteria
	 * @param table
	 * @param config
	 * @param type
	 * @return 导出的报表文件路径
	 */
	String report(DetachedCriteria criteria,ReportTable table,ExportConfig config,int type);
	
	
	/**
	 * 销售订单
	 * @param table
	 * @param config
	 * @param type
	 * @return
	 */
	String reportSaleOrder(DetachedCriteria criteria,ReportTable table,ExportConfig config,int type);
	/**
	 * 配送单
	 * @param table
	 * @param config
	 * @param type
	 * @return
	 */
	String exportAlreadyDistribution(DetachedCriteria criteria,ReportTable table,ExportConfig config,int type);
	
	/**
	 * 资产流向
	 */
	String exportAssetsLiuXiang(DetachedCriteria criteria,ReportTable tables,ExportConfig config,int type);
	
	/**
	 * 根据指定的数据源及类型导出报表
	 * @param dataList
	 * @param table
	 * @param config
	 * @param type
	 * @return 导出的报表文件路径
	 */
	String report(Collection<?> dataList,ReportTable table,ExportConfig config,int type);
	
	/**
	 * 导出PDF
	 * @param criteria
	 * @param table
	 * @param config
	 * @return 导出的报表文件路径
	 */
	String reportPDF(DetachedCriteria criteria,ReportTable table,ExportConfig config);
	
	/**
	 * 导出EXCEL
	 * @param criteria
	 * @param table
	 * @param config
	 * @return 导出的报表文件路径
	 */
	String reportExcel(DetachedCriteria criteria,ReportTable table,ExportConfig config);
}
